package chap1;

import chap1.util.ChineseAndEnglishUtils;
import chap1.util.MapUtil;
import chap1.util.StringUtil;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class CntWordsThread implements Runnable {
    private String name;       // 表示线程的名称
    private String fileContent;       // 表示线程的名称

    public CntWordsThread(String name, String fileContent) {
        this.name = name;      // 通过构造方法配置name属性
        this.fileContent = fileContent;
    }
//    https://www.cnblogs.com/larrylawrence/p/3517897.html


    void cntWords() {

//        String fileContent = readFile();
//        Set<String> engs = new TreeSet<>();
//        Set<String> engs = new TreeSet<>();
//        List<String> engs = new ArrayList<>();
//        List<Character> chineseLst = new ArrayList<>();
//        for (int i = 0; i < 10; i++) {
//            System.out.println(name + "运行，i = " + i);
//        }
//         这个文本的一段好像就是 一个 回车 ,所以就简单的按照回车处理了.. 说实话 我一开始不知道是
//         按照段 还以为是按照行
        String[] split = fileContent.split("\n");
        List<Integer> cntLines = new ArrayList<>();
        for (String line : split) {
            cntLines.add(StringUtil.cntLineWords(line));
        }

//
//        StringBuilder tmpEng = new StringBuilder();
//        for (int i = 0; i < fileContent.length(); i++) {
////            char c = fileContent.charAt(i);
////            if()
//            char ch = fileContent.charAt(i);
//
////            if(StringUtil.isChinese(ch)){
////
////            }
//            if (ch >= '0' && ch <= '9') {
//
////                digitCount++;
//
//            } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
//
////                engishCount++;
//
//                tmpEng.append(ch);
//            } else {
//
////                chineseCount++;
//                String eng = tmpEng.toString();
//                if (!eng.equals("")) {
////                    engs.add(tmpEng.toString());
//                    engs.add(eng);
//
//                }
//                tmpEng = new StringBuilder();
//                if (ChineseAndEnglishUtils.isChineseByBlock(ch)) {
////                chineseWords.add(ch);
//                    chineseLst.add(ch);
////                    if(chineseWords.containsKey(ch)){
////                        chineseWords.put(ch,chineseWords.get(ch)+1);
////                    }else{
////                        chineseWords.put(ch,1);
////                    }
////                if(chineseWords.get(ch))
//                }
//
//            }
//        }
        System.out.println("cntLines");
        System.out.println(cntLines);
        int cnt = 1;
        StringBuilder outStr = new StringBuilder();
        for (Integer cntLine : cntLines) {
            outStr.append(String.format("第%d行，有%d个单词\n", cnt, cntLine));
            cnt++;
//            System.out.println(String.format("第%d行，有%d个单词",cnt));
        }

//        MapUtil.sortedMapByValue()

        try (FileWriter fileWriter = new FileWriter("cnt_words.txt")) {
//            fileWriter.write(String.valueOf(engs));
            fileWriter.write(String.valueOf(outStr));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public void run() {
        cntWords();
        // 覆写run()方法，作为线程 的操作主体
//        String  inFilePath="Z01-Example.txt";
//        try(Scanner scanner=new Scanner(inFilePath)){
//            String line = scanner.nextLine();
//        }
//        UploadTh
//        Set<String> engs = new TreeSet<>();
////        for (int i = 0; i < 10; i++) {
////            System.out.println(name + "运行，i = " + i);
////        }
//        StringBuilder tmpEng = new StringBuilder();
//        for (int i = 0; i < fileContent.length(); i++) {
////            char c = fileContent.charAt(i);
////            if()
//            char ch = fileContent.charAt(i);
//
//            if (ch >= '0' && ch <= '9') {
//
////                digitCount++;
//
//            } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
//
////                engishCount++;
//
//                tmpEng.append(ch);
//            } else {
//
////                chineseCount++;
//                engs.add(tmpEng.toString());
//                tmpEng = new StringBuilder();
//
//            }
//        }
//
//        try(FileWriter fileWriter=new FileWriter("eng_dic.txt")){
//            fileWriter.write(String.valueOf(engs));
//        } catch (IOException e) {
//            e.printStackTrace();
//        }


//        String fileContent = readFile();
//        Set<String> engs = new TreeSet<>();
////        for (int i = 0; i < 10; i++) {
////            System.out.println(name + "运行，i = " + i);
////        }
//        StringBuilder tmpEng = new StringBuilder();
//        for (int i = 0; i < fileContent.length(); i++) {
////            char c = fileContent.charAt(i);
////            if()
//            char ch = fileContent.charAt(i);
//
//            if (ch >= '0' && ch <= '9') {
//
////                digitCount++;
//
//            } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
//
////                engishCount++;
//
//                tmpEng.append(ch);
//            } else {
//
////                chineseCount++;
//                String eng = tmpEng.toString();
//                if (!eng.equals("")) {
////                    engs.add(tmpEng.toString());
//                    engs.add(eng);
//
//                }
//                tmpEng = new StringBuilder();
//
//            }
//        }
//
//        try (FileWriter fileWriter = new FileWriter("eng_dic.txt")) {
//            fileWriter.write(String.valueOf(engs));
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        splitChinese();
    }

    void splitChinese() {

//        String fileContent = readFile();
//        Set<String> engs = new TreeSet<>();
//        Set<String> chineseWords = new TreeSet<>();
//        Set<Character> chineseWords = new TreeSet<>();
        Map<Character, Integer> chineseWords = new TreeMap<>();
//        for (int i = 0; i < 10; i++) {
//            System.out.println(name + "运行，i = " + i);
//        }
//        StringBuilder tmpEng = new StringBuilder();
        for (int i = 0; i < fileContent.length(); i++) {
//            char c = fileContent.charAt(i);
//            if()
            char ch = fileContent.charAt(i);

//            if (StringUtil.isChinese(ch)) {
            if (ChineseAndEnglishUtils.isChineseByBlock(ch)) {
//                chineseWords.add(ch);
                if (chineseWords.containsKey(ch)) {
                    chineseWords.put(ch, chineseWords.get(ch) + 1);
                } else {
                    chineseWords.put(ch, 1);
                }
//                if(chineseWords.get(ch))
            }

//            if (ch >= '0' && ch <= '9') {
//
////                digitCount++;
//
//            } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
//
////                engishCount++;
//
////                tmpEng.append(ch);
//            } else {
//
////                chineseCount++;
//                chineseWords.add(ch);
////                String eng = tmpEng.toString();
////                if (!eng.equals("")) {
//////                    engs.add(tmpEng.toString());
//////                    engs.add(eng);
////                    chineseWords.add(ch);
////
////                }
////                tmpEng = new StringBuilder();
//
//            }
        }

        String writeStr = String.valueOf(chineseWords);
        System.out.println(writeStr);

        try (FileWriter fileWriter = new FileWriter("chineseWords_dic.txt")) {
//            fileWriter.write(String.valueOf(chineseWords));
            fileWriter.write(writeStr);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
